//app.js
var QQMapWX = require('/libs/qqmap-wx-jssdk.min.js');
var qqmapsdk;
const tabBarLinks = [
  'pages/index/index'
];
App({
    /**
     * 全局变量
     */
    globalData: {
        user_id: null,
    }, 

    // api地址
    api_root: "https://www.ennn.cn/api/",

    /**
     * 生命周期函数--监听小程序初始化
    */
    onLaunch(e) {
        let _this = this;
        // 小程序主动更新
        _this.updateManager();
        // 小程序启动场景
        _this.onStartupScene(e.query);
        //判断所在城市
        
    },

    /**
     * 小程序启动场景
     */
    onStartupScene(query) {
        // 获取场景值
        let scene = this.getSceneData(query);
    },
    /**
     * 获取场景值(scene)
     */
    getSceneData(query) {
        return query.scene ? util.scene_decode(query.scene) : {};
    },

    /**
     * 当小程序启动，或从后台进入前台显示，会触发 onShow
     */
    onShow(options) {
        let _this = this;
        // 获取小程序基础信息
        // this.getWxappBase();
        //_this.checkIsLogin();
        
    },

    /**
     * 生成转发的url参数
    */
    getShareUrlParams(params) {
        let _this = this;
        return util.urlEncode(Object.assign({
        referee_id: _this.getUserId()
        }, params));
    },

    /**
     * 当前用户id
    */
    getUserId() {
        return wx.getStorageSync('user_id');
    },

    /**
     * 验证登录
     */
    checkIsLogin() {
        let _this = this;
        if (wx.getStorageSync('sessionid') == '') {
        //执行登陆
            _this.doLogin();
        }
    },

    /**
     * get请求
     */
    _get(url, data, success, fail, complete, check_login) {
        wx.showNavigationBarLoading();
        let _this = this;
        var city_code = wx.getStorageSync('city_code');
        // 构造请求参数
        data = data || {};
        // 构造get请求
        let request = function () {
        data.sessionid = wx.getStorageSync('sessionid');
        data.city_code = city_code;
        wx.request({
            url: _this.api_root + url,
            header: {
                'content-type': 'application/json',
                'Cookie': wx.getStorageSync('sessionid'),
            },
            data: data,
            success(res) {
            if (res.statusCode !== 200 || typeof res.data !== 'object') {
                //console.log(res);
                _this.showError('网络请求出错');
                return false;
            }
            if (res.data.code == '-1') {
                // 登录态失效, 重新登录
                //wx.hideNavigationBarLoading();
                wx.clearStorageSync('sessionid');
                //_this.showSuccess(res.data.msg);
                //_this.doLogin();
            } else if (res.data.code === 0) {
                _this.showError(res.data.msg, function () {
                    fail && fail(res);
                });
                return false;
            } else {
                success && success(res.data);
            }
            },
            fail(res) {
            _this.showError(res.errMsg, function () {
                fail && fail(res);
            });
            },
            complete(res) {
                wx.hideNavigationBarLoading();
                complete && complete(res);
            },
        });
        };
        // 判断是否需要验证登录
        check_login ? _this.doLogin(request) : request();
    },

    /**
     * post提交
     */
    _post_form(url, data, success, fail, complete, isShowNavBarLoading) {
        let _this = this;
        var city_code = wx.getStorageSync('city_code');
        isShowNavBarLoading || true;
        data.sessionid = wx.getStorageSync('sessionid');
        data.city_code = city_code;
        // 在当前页面显示导航条加载动画
        if (isShowNavBarLoading == true) {
            wx.showNavigationBarLoading();
        }
        wx.request({
            url: _this.api_root + url,
            header: {
                'content-type': 'application/x-www-form-urlencoded',
                'Cookie': wx.getStorageSync('sessionid'),
            },
            method: 'POST',
            data: data,
            success(res) {
                if (res.statusCode !== 200 || typeof res.data !== 'object') {
                _this.showError('网络请求出错');
                return false;
                }
                if (res.data.code === -1) {
                    // 登录态失效, 重新登录
                    //wx.hideNavigationBarLoading();
                    _this.showSuccess(res.data.msg);
                    wx.clearStorageSync('sessionid');
                    //_this.doLogin();
                    return false;
                } else if (res.data.code === 0) {
                    _this.showError(res.data.msg, function () {
                        fail && fail(res);
                    });
                    return false;
                } else if (res.data.code === -41003) {
                    _this.showError(res.data.msg, function () {
                        fail && fail(res);
                    });
                    return false;
                }
                success && success(res.data);
            },
            fail(res) {
                // console.log(res);
                _this.showError(res.errMsg, function () {
                    fail && fail(res);
                });
            },
            complete(res) {
                wx.hideNavigationBarLoading();
                wx.hideLoading();
                complete && complete(res);
            }
        });
    },
    /**
     * 执行用户登录
     */
    doLogin() {
        // 保存当前页面
        let pages = getCurrentPages();
        if (pages.length) {
            let currentPage = pages[pages.length - 1];
            "pages/user/index" != currentPage.route &&
                wx.setStorageSync("currentPage", currentPage);
        }
        // 跳转授权页面
        wx.navigateTo({
            url: "/pages/user/index"
        });
    },
    /**
     * 授权登录
     */
    getUserInfo(e, callback) {
        let App = this;
        if (e.detail.errMsg !== 'getUserInfo:ok') {
            return false;
        }
        wx.showLoading({
            title: "正在登录",
            mask: true
        });
        // 执行微信登录
        wx.login({
            success(res) {
                // 发送用户信息
                App._post_form('wechat/login', {
                    code: res.code,
                    user_info: e.detail.rawData,
                    encrypted_data: e.detail.encryptedData,
                    iv: e.detail.iv,
                    signature: e.detail.signature,
                    referee_id: wx.getStorageSync('referee_id')
                }, result => {
                // 执行回调函数          
                    console.log(result.data);
                    wx.navigateBack();
                }, false, () => {
                    wx.hideLoading();
                });
            }
        });
    },

    /**
     * 显示成功提示框
     */
    showSuccess(msg, callback) {
        wx.showToast({
            title: msg,
            icon: 'success',
            mask: true,
            duration: 1500,
            success() {
                callback && (setTimeout(function () {
                    callback();
                }, 500));
            }
        });
    },

    /**
     * 显示失败提示框
     */
    showError(msg, callback) {
        wx.showModal({
            title: '友情提示',
            content: msg,
            showCancel: false,
            success(res) {
                // callback && (setTimeout(function() {
                //   callback();
                // }, 1500));
                callback && callback();
            }
        });
    },

    //获取用户地理位置权限
    getPermission: function (obj) {
        wx.chooseLocation({
        success: function (res) {
            obj.setData({
            addr: res.address      //调用成功直接设置地址
            })
        },
        fail: function () {
            wx.getSetting({
            success: function (res) {
                var statu = res.authSetting;
                if (!statu['scope.userLocation']) {
                wx.showModal({
                    title: '是否授权当前位置',
                    content: '需要获取您的地理位置，请确认授权，否则地图功能将无法使用',
                    success: function (tip) {
                    if (tip.confirm) {
                        wx.openSetting({
                        success: function (data) {
                            if (data.authSetting["scope.userLocation"] === true) {
                            wx.showToast({
                                title: '授权成功',
                                icon: 'success',
                                duration: 1000
                            })
                            //授权成功之后，再调用chooseLocation选择地方
                            wx.chooseLocation({
                                success: function (res) {
                                obj.setData({
                                    addr: res.address
                                })
                                },
                            })
                            } else {
                            wx.showToast({
                                title: '授权失败',
                                icon: 'success',
                                duration: 1000
                            })
                            }
                        }
                        })
                    }
                    }
                })
                }
            },
            fail: function (res) {
                wx.showToast({
                    title: '调用授权窗口失败',
                    icon: 'success',
                    duration: 1000
                })
            }
            })
        }
        })
    },
    /**
     * 小程序主动更新
     */
    updateManager() {
        if (!wx.canIUse('getUpdateManager')) {
            return false;
        }
        const updateManager = wx.getUpdateManager();
        updateManager.onCheckForUpdate(function (res) {
            // 请求完新版本信息的回调
            // console.log(res.hasUpdate)
        });
        updateManager.onUpdateReady(function () {
            wx.showModal({
                title: '更新提示',
                content: '新版本已经准备好，即将重启应用',
                showCancel: false,
                success(res) {
                    if (res.confirm) {
                        // 新的版本已经下载好，调用 applyUpdate 应用新版本并重启
                        updateManager.applyUpdate()
                    }
                }
            });
        });
        updateManager.onUpdateFailed(function () {
            // 新的版本下载失败
            wx.showModal({
                title: '更新提示',
                content: '新版本下载失败',
                showCancel: false
            })
        });
    },
    //组件使用方法
    methods: {
        HQopen(e) {
            let url = e.currentTarget.dataset.url;
            wx.redirectTo({ url: url });
        }
    },

})